package security;

//import com.bugull.mongo.BuguMapper;
//import com.demo.mongodb.entity.Permission;
//import com.demo.mongodb.entity.Role;
//import com.demo.mongodb.entity.User;
//import com.demo.mongodb.entity.UserDao;

import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;

/**
 * Auth: bruce-sha
 * Date: 2015/4/28
 */
public class MongodbRealm extends AuthorizingRealm {

//    private UserDao userDao;

    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
//        String name = getName();
//        Iterator iterator = principals.fromRealm(name).iterator();
//        String userName = null;
//        if (iterator.hasNext()) {
//            userName = (String) iterator.next();
//        }
//        User user = (User) userDao.findOne("username", userName);
//        BuguMapper.fetchCascade(user, "roleSet");
//        if (user != null) {
//            SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
//            for (Role group : user.getRoleSet()) {
//                BuguMapper.fetchCascade(group, "perssionSet");
//                info.addRole(group.getName());
//                if (group.getPerssionSet() != null) {
//                    Iterator it = group.getPerssionSet().iterator();
//                    while (it.hasNext()) {
//                        info.addStringPermission(((Permission) it.next()).getName());
//                    }
//                }
//
//            }
//            return info;
//        } else {
//            return null;
//        }

        return null;
    }

    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authcToken) throws AuthenticationException {
//        UsernamePasswordToken token = (UsernamePasswordToken) authcToken;
//        User user = (User) userDao.query().is("username", token.getUsername()).result();
//        if (user != null) {
//            return new SimpleAuthenticationInfo(user.getUsername(), user.getPassword(), getName());
//        } else {
//            return null;
//        }
        return null;
    }

//    public UserDao getUserDao() {
//        return userDao;
//    }
//
//    public void setUserDao(UserDao userDao) {
//        this.userDao = userDao;
//    }

}
